﻿using YourRaidingBuddy.Core.Helpers;
using Styx.Helpers;
using System.ComponentModel;

namespace YourRaidingBuddy.Interfaces.Settings
{
    internal class YbSettingsPR : Styx.Helpers.Settings
    {

        public YbSettingsPR()
            : base(InternalSettings.SettingsPath + "_Protection.xml")
        {
        }

        #region Ability Options
        [Setting]
        [Styx.Helpers.DefaultValue(Enum.AbilityTrigger.OnBossDummy)]
        [Category("Protection - Ability Options")]
        [DisplayName("Avenging Wrath")]
        [Description("Select the usage of your Avenging Wrath Cooldown to be used at.")]
        public Enum.AbilityTrigger AvengingWrath { get; set; }


        [Setting]
        [Styx.Helpers.DefaultValue(55)]
        [Category("Protection - Ability Options")]
        [DisplayName("Guardian of Ancient Kings % HP")]
        [Description("Use Guardian of Ancient Kings at % HP")]
        public int GuardianofAncientKingsHP { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Ability Options")]
        [DisplayName("Guardian of Ancient Kings Enable")]
        [Description("Checked enables Guardian of Anicent Kings usage.")]
        public bool GuardianofAncientKingsEnable { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(55)]
        [Category("Protection - Ability Options")]
        [DisplayName("Ardent Defender % HP")]
        [Description("Use Ardent Defender at % HP")]
        public int ArdentDefenderHP { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Ability Options")]
        [DisplayName("Ardent Defender Enable")]
        [Description("Checked enables Ardent Defender usage.")]
        public bool ArdentDefenderEnable { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(10)]
        [Category("Protection - Ability Options")]
        [DisplayName("Lay on Hands % HP")]
        [Description("Use Lay on Hands at % HP")]
        public int LayonHandsHP { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Ability Options")]
        [DisplayName("Lay on Hands Enable")]
        [Description("Checked enables Lay on Hands usage.")]
        public bool LayonHandsEnable { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Light's Hammer Hotkey Enable")]
        [Description("Checked enables Light Hammer on Hotkey")]
        public bool UseLightsHammerHotkey { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Fist of Justice Enable")]
        [Description("Checked enables Fist of Justice Hotkey")]
        public bool EnableFistofJustice { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Word of Glory Enable")]
        [Description("Checked enables Word of Glory")]
        public bool EnableWordofGlory { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Ability Options")]
        [DisplayName("Consecration Enable")]
        [Description("Checked enables Consecration")]
        public bool EnableConsecration { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Self Doubt Amalgam")]
        [Description("Amalgam Self Doubt StackCount")]
        public int CheckBossAmalgam { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Blackfuse Electrostatic Charge")]
        [Description("Electrostatic Charge Stacks")]
        public int CheckBossBlackfuse { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Earthbreaker Haromm Froststorm Strike")]
        [Description("Froststorm Strike Stacks")]
        public int CheckBossEarthBreakerHaromm { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Galakras Flames of Galakrond")]
        [Description("Flames of Galakrond StackCount")]
        public int CheckBossGalakras { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Garrosh Gripping Despair")]
        [Description("Gripping Despair StackCount")]
        public int CheckBossGarrosh1 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Garrosh Empowered Gripping Despair")]
        [Description("Empowered Gripping Despair StackCount")]
        public int CheckBossGarrosh2 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Immerseus Corrosive Blast")]
        [Description("Corrosive Blast StackCount")]
        public int CheckBossImmerseus { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Iron Juggernaut Ignite Armor")]
        [Description("Ignite Armor StackCount")]
        public int CheckBossIronJuggernaut { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Malkorok Fatal Strike")]
        [Description("Fatal Strike StackCount")]
        public int CheckBossMalkorok { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Nazgrim Sundering Blow")]
        [Description("Sundering Blow StackCount")]
        public int CheckBossNazgrim { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Sha Wounded Pride")]
        [Description("Wounded Pride StackCount")]
        public int CheckBossSha { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Thok Panic")]
        [Description("Panic StackCount")]
        public int CheckBossThok1 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Thok Acid Breath")]
        [Description("Acid Breath StackCount")]
        public int CheckBossThok2 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Thok Freezing Breath")]
        [Description("Freezing Breath StackCount")]
        public int CheckBossThok3 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(1)]
        [Category("Protection - Auto Taunting")]
        [DisplayName("Boss Thok Scorching Breath")]
        [Description("Scorching Breath StackCount")]
        public int CheckBossThok4 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Lay on Hands Mouseover Enable")]
        [Description("Checked enables Lay on Hands Mouseover")]
        public bool UseLayonHandsMouseover { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Enable Auto-Taunting")]
        [Description("Checked enables Auto Taunting")]
        public bool CheckSpecial { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Hand of Purity Auto")]
        [Description("Checked enables Hand of Purity automated")]
        public bool HandsEnable{ get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Lay on Hands Forcus-Target Enable")]
        [Description("Checked enables Lay on Hands Forcus-Target")]
        public bool UseLayonHandsFocusTarget { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Hands of Salvation Mouseover Enable")]
        [Description("Checked enables Hands of Salvation Mouseover")]
        public bool UseHandofSalvationMouseover { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Ability Options")]
        [DisplayName("Hands of Salvation Focus-Target Enable")]
        [Description("Checked enables Hands of Salvation Focus-Target")]
        public bool UseHandofSalvationFocusTarget { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(40)]
        [Category("Protection - Ability Options")]
        [DisplayName("Divine Protection % HP")]
        [Description("Use Divine Protection at % HP")]
        public int DivineProtectionHP { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Ability Options")]
        [DisplayName("Divine Protection Enable")]
        [Description("Checked enables Divine Protection usage.")]
        public bool DivineProtectionEnable { get; set; }


        [Setting]
        [Styx.Helpers.DefaultValue(Enum.AbilityTrigger.OnBossDummy)]
        [Category("Protection - Ability Options")]
        [DisplayName("Class Racials")]
        [Description("Select the usage of your class racials - Only DPS abilities (Buffs & Attacks).")]
        public Enum.AbilityTrigger ClassRacials { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(Enum.TriggerTarget.OnMe)]
        [Category("Protection - Ability Options")]
        [DisplayName("Light Hammer Location")]
        [Description("Select the usage of Light's Hammer")]
        public Enum.TriggerTarget LightHammerLocation { get; set; }


        
        #endregion

        #region Item Options
        [Setting]
        [Styx.Helpers.DefaultValue(Enum.AbilityTrigger.OnBossDummy)]
        [Category("Protection - Item Options")]
        [DisplayName("Hands / Waist")]
        [Description("Select the usage of your Hands / Waist.")]
        public Enum.AbilityTrigger UseHands { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Item Options")]
        [DisplayName("Healthstone")]
        [Description("Checked enables Healthstone usage.")]
        public bool CheckHealthStone { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(40)]
        [Category("Protection - Item Options")]
        [DisplayName("Healthstone %")]
        [Description("Select the use-on HP for Healthstone usage.")]
        public int CheckHealthStoneNum { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(Enum.AbilityTrigger.OnBossDummy)]
        [Category("Protection - Item Options")]
        [DisplayName("Trinket #1")]
        [Description("Select the usage of Trinket #1.")]
        public Enum.AbilityTrigger Trinket1 { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(Enum.AbilityTrigger.OnBossDummy)]
        [Category("Protection - Item Options")]
        [DisplayName("Trinket #2")]
        [Description("Select the usage of Trinket #2.")]
        public Enum.AbilityTrigger Trinket2 { get; set; }
        #endregion

        #region Selectable Options
        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Selectable Options")]
        [DisplayName("Enable Multi-Target (AoE)")]
        [Description("Enables AoE abilities, multi-target combat will be engaged.")]
        public bool CheckAoE { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Selectable Options")]
        [DisplayName("Enable Auto Attack")]
        [Description("Enables auto attack, persistent combat while tabbing units.")]
        public bool CheckAutoAttack { get; set; }

       
        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Selectable Options")]
        [DisplayName("Enable Item De-Sync")]
        [Description("Enables de-sync of items - With this enabled it uses Hands / Waist outside Trinket Cooldowns.")]
        public bool CheckDesyncTrinkHands { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(true)]
        [Category("Protection - Selectable Options")]
        [DisplayName("Enable Interrupts")]
        [Description("Enables interrupts, uses Pummel and Intimidating Shout.")]
        public bool CheckInterrupts { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(false)]
        [Category("Protection - Selectable Options")]
        [DisplayName("Enable Lifeblood")]
        [Description("Checked enables Lifeblood.")]
        public bool CheckLifeblood { get; set; }

        [Setting]
        [Styx.Helpers.DefaultValue(10)]
        [Category("Protection - Selectable Options")]
        [DisplayName("Lifeblood %")]
        [Description("Will use Lifeblood when health % is less than or equal to the set value.")]
        public int CheckLifebloodNum { get; set; }
        #endregion
    }
}
